Personal computers (PCs) such as IBM-compatible PCs typically include hardware devices such as a processor and a memory for implementing various software programs, a principal one being a central operating environment. In turn, the operating environment, or operating system, supports the variety of other software applications such as a word processing program or a spreadsheet program.
Some operating systems include a graphical user interface (GUI), described generally as a graphical operating system, which displays various information to the user as a combination of pictures and text that the user can manipulate. Generally, some graphical operating systems instigate an instance of a software application by displaying the various text, graphics and features of the application within a rectangular window. One conventional method of displaying information includes the use of multiple windows drawn on a single screen for displaying outputs from, and inputs to, multiple sources at one time. Although multiple windows can arise from a single program on a computer, the typical screen includes windows from different programs executing independently of each other on the computer, or even on different computers configured to a common display.
Generally, the presence of multiple display windows on the same physical location on the display screen requires some control over the manner in which the conflicting windows interact with one another. In one system, a window manager is provided by the operating system to obtain display information from multiple applications and manage the manner in which they are presented on the display screen according to a display order. Typically, the display order is defined in terms of the window's placement along a virtual “z” axis of the display screen. This is generally described as the “z” order. In other words, similar to a stack of papers, the windows are stacked in a virtual z order, which defines which window will be on top of the stack and obscure other windows below it. Thus, the window manager resolves conflicts between the windows by stacking the windows in a numerical order. For example, a single window may be enlarged to cover the entire display screen, thereby acquiring a higher z order. Accordingly, the higher z order window would obscure any other window having a lower z order.
Since a typical computer system may be processing information related to many applications with corresponding windows, it may be desirable for a user to simultaneously view more than one application window. One method for viewing multiple application windows is to size the windows such that they are all displayed within the display screen. However, the user typically only views portions of the desired information in each application window if the application window is sized in its default display size. Alternatively, the information within the application window can also be resized such that all the information fits within the window display. However, the size of the information typically becomes sufficiently small that it is not easily understandable. Although larger screen sizes or multiple monitors have been attempted to resolve this problem, these solutions are expensive and take up much physical space. In addition, a change in an application window's z order would cause the contents of the window to rise ahead of other application windows possibly obscuring previously displayed windows.
In a typical operating environment, the graphical operating system defines a desktop that includes a screen display containing images of icons representative of applications available to the user, as well as active and inactive application programs displayed as windows within the desktop screen display. An active application program is an application that frequently regenerates the image displayed in its window because events associated with the program frequently change. Each time an event occurs, the application communicates with the operating system causing its window to be regenerated, incorporating the change. Examples of active application programs are programs that display a clock or a ticker tape or an animated character within the operating environment. Inactive programs, on the other hand, are programs that do not require frequent regeneration of the image displayed in their respective window. A word processing or spreadsheet program displaying a document in its respective window is an example of an inactive program. Such programs, however, can become active if the display is scrolled or if they are required to present a new display.
Because the desktop typically includes background displays, such as the icons, inactive windows, and active windows, performance problems occur as windows are manipulated, such as by moving, resizing, or animating them. In some conventional operating environments, the object on the desktop with the highest z order exclusively owns each pixel within its window on the display screen. Accordingly, any other object having a lower z order would not be allowed to write data to the display screen for occupying the particular pixel. For example, if a first inactive application window overlaps a portion of a second inactive application window, the overlapped portion of the second window is not sent to the display. Thus, if the first window is moved or resized, thereby exposing the previously overlapped portion of the second window, the operating system requires the second application to regenerate the overlapped portion of the window, which could require the application to regenerate the entire window. However, because the second window is inactive, the regeneration would not have been required by the application and, consequently, wastes system resources. Additionally, in terms of multiple moves, such as “dragging” a window across the screen or an animated window, this type of action often results in numerous window regenerations at great expense to the system resources. For example, frames of an animated sequence are typically regenerated at 10-12 frames per second. If each successive frame of animation uncovers a single pixel of an inactive application window, the operating system would have to request a regeneration of the underlying window 10-12 times per second. Often, this not only reduces operating system performance, but also results in unwanted display flicker.
Another deficiency associated with conventional graphical operating systems is the requirement that each object displayed on the desktop be confined within a rectangular window. Thus, if the object to be displayed is a circle, such as smiley face, it would be displayed within the confines of a rectangular window. If then the corner of the window overlaps another underlying window, the corner of the window would block out portions of the underlying window even though the corner was not being utilized to display information. One method of correcting this deficiency is to reproduce portions of the underlying background within the unused portion of the window. With reference to the smiley face example, the four corners would be painted with the text or graphics from the underlying window. However, if the object directly below the window changes, the top window would not automatically change with it. Thus, the regeneration of a background window causes the other windows to regenerate as well. Moreover, if the background window is active, such as a clock, this would require the top window to regenerate at the same rate.
Thus, there is a need to provide a method and structure for managing the interaction between two or more overlapping display objects such that system resource utilization and display screen quality are optimized.